package servlets;

import entities.User;
import java.io.IOException;
import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import managers.EntityManagerAux;

/**
 * Creation d'un user. Cette version d'ajouter un utilisateur
 * est appelle depuis classes qu'utilisent de ajax. Celui ci est 
 * la classe pour ajouter utilisateur qu'on utilise.
 */
public class AddUser2 extends HttpServlet {
    @EJB EntityManagerAux mng;

    public AddUser2() {
        super();
    }
    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
     protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    	        throws ServletException, IOException {
         HttpSession session = request.getSession();
         User u = (User) session.getAttribute("user");
         if (u.getUser() == null || u.getUser().equals(null)) {
            String id = request.getParameter("idUser");
            String nom = request.getParameter("nameUser");
            String prenom = request.getParameter("surnameUser");
            String email = request.getParameter("mailUser");
            String password = request.getParameter("passUser");
            String sex = request.getParameter("sexUser");
            String age = request.getParameter("ageUser");
            
            boolean hasError = false;
            String erreurs = "";

            if (nom.equals(null) || "".equals(nom)) {
                hasError = true;
                erreurs += "<li>Nom incorrect</li>";
            }
            if (prenom.equals(null) || "".equals(prenom)) {
                hasError = true;
                erreurs += "<li>Prenom incorrect</li>";
            }
            if (id.equals(null) || id.isEmpty()) {
                hasError = true;
                erreurs += "<li>Login incorrect</li>";
            }
            if (password.equals(null) || "".equals(password) || password.length() < 6) {
                hasError = true;
                erreurs += "<li>Le mot de passe doit contenir au minimum 6 caractères</li>";
            }
            if (email.equals(null) || "".equals(email)) {
                hasError = true;
                erreurs += "<li>Email incorrect</li>";
            }
            
            try{
            	request.setAttribute("ageUser",(String.valueOf(Integer.parseInt(age))));
            }
            catch(Exception e){
            	System.out.println("age non numérique");
            }

            if (hasError) {
                request.setAttribute("error",erreurs);
                request.setAttribute("nameUser",nom);
                request.setAttribute("surnameUser",prenom);
                request.setAttribute("idUser",id);
                request.getRequestDispatcher("addUser.jsp").forward(request, response);
                }

            try {
    			String passHash = mng.encode(password);
                mng.addUser(id, nom, passHash, prenom, email, sex, age);
                
                request.setAttribute("message", "Votre compte user a correctement été créé. Vous pourrez vous connecter et profiter du site dès qu'un administrateur aura validé votre inscription.");
                request.getRequestDispatcher("toAllEvent.jsp").forward(request,response);
				int aux = Integer.parseInt(age);

            } catch (Exception e) {
            	System.out.println(e.toString());

            }
           /*

        catch (Exception e) {

             request.setAttribute("message","Erreur : ce login est déjà utilisé ou bien il s'agit d'une erreur fatale");
             request.getRequestDispatcher("index.jsp").forward(request, response);
         }
         */
         
        } else {
            /**
             * Il est deja connecte, ne le laissons pas creer un autre compte
             */
            request.setAttribute("message", "Vous possédez déjà un compte user. Vous ne pouvez donc pas en créer un nouveau.");
            request.getRequestDispatcher("index.jsp").forward(request, response);
        }
     }



    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }


    /**
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}